package cn.kgc.spring.factory;

import org.springframework.beans.factory.FactoryBean;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * @author: mosin
 * @version: v1.0  2022/10/12
 * 自定义工厂对象获取复杂类型的对象
 * 1.编写类实现FactoryBean接口 泛型指的是想要获取的对象
 * 2.实现接口中的方法
 * 3.声明类在spring容器中
 *
 * 注： 一个类一旦实现了FactoryBean接口 那么从容器中再次获取实例对象时不在返回该类的实例对象
 *    返回的是重写的getObject()方法返回的值类型
 *
 */
public class ConnectionFactoryBean implements FactoryBean<Connection> {


    @Override
    public Connection getObject() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection("jdbc:mysql:///java2216", "root", "root");
        return connection;
    }

    @Override
    public Class<?> getObjectType() {
        return Connection.class;
    }
}
